/*                          UX-Framework                               
 *                                                                 
 *  iZE Co.,Ltd. Copyright 2009 All rights reserved.          
 *  This file is distributed under the terms of the GNU Lesser 
 *  General Public License, described in file LICENSE.                                     
 */

package jp.ize.ux.components;

// {{{ imports
import jp.ize.ux.UXObject;
import jp.ize.ux.UXResource;
import jp.ize.ux.UXController;
import jp.ize.ux.UXInteraction;
import jp.ize.ux.UXColor;
import jp.ize.ux.UXFocusManager;
import jp.ize.ux.components.UXTextAttribute;
import jp.ize.ux.components.UXButton;
import jp.ize.ux.states.UXBasicState;
import jp.ize.ux.acts.Act;
// }}}
// {{{ class UXDialogResource
/**
 * UXDialogResource クラス<br>
 * UXDialogコンポーネントに利用されるリソース群です。
 */
class UXDialogResource
{
	// {{{ public var background(default, default) : UXObject
	/**
	 * ダイアログの背景となるコンポーネントです。
	 */
	public var background(default, default) : UXObject;
	// }}}
	// {{{ public var closeButton( default, default ) : UXButtonResource;
	/**
	 * 閉じるボタンのためのリソースです。
	 */
	public var closeButton( default, default ) : UXButtonResource;
	// }}}
	// {{{ public var titleBar( default, default ) : UXResource
	/**
	 * タイトルバーに適用されるリソースです。
	 */
	public var titleBar( default, default ) : UXResource;
	// }}}
	// {{{ public var icon( default, default ) : UXResource
	/**
	 * タイトルバーに表示される小さいアイコンです。
	 */
	public var icon( default, default ) : UXResource;
	// }}}
	// {{{ public var focus(default, default) : UXResource
	/**
	 * フォーカスが当てられた時に利用されるリソース。
	 */
	public var focus(default, default) : UXResource;
	// }}}
	// {{{ public var unfocus(default, default) : UXResource;
	/**
	 * フォーカスを失ったときに利用されるリソース。
	 */
	public var unfocus(default, default) : UXResource;
	// }}}
}
// }}}
// {{{ class UXDialogCoState
class UXDialogCoState
{
	// {{{ public var focused(default, default ) : Bool
	/**
	 * フォーカスが当たっているかどうかを取得、または設定します。
	 */
	public var focused(default, default) : Bool;
	// }}}
}
// }}}
// {{{ enum UXDialogExclusiveState
/**
 * UXDialogの各種状況を表現します。
 */
enum UXDialogExclusiveState
{
	/** 初期化状態にある事を意味します。*/
	INIT;
	/** 無効になっている事を意味します。*/
	DISABLE;
	/** 有効になっている事を意味します。パラメーターでは、フォーカスの状況を保持します。*/
	ENABLE ( flags : UXDialogCoState );
}
// }}}
// {{{ enum UXDialogActEvent
enum UXDialogActEvent
{
}
// }}}
// {{{ class UXDialogAct extends ActSubject<UXDialogActEvent>
/**
 * UXDialogAct クラス<br>
 * UXDialogのデフォルトアクションです。
 */
class UXDialogAct extends ActSubject<UXDialogActEvent>
{
	// {{{ public function new()
	/**
	 * コンストラクタです。<br>
	 */
	public function new()
	{
		super();
	}
	// }}}
	// {{{ public function focus( s : UXDialogState ) : Void
	/**
	 * フォーカスされた時のデフォルトアクションです。
	 */
	public function focus( s : UXDialogState ) : Void
	{
	}
	// }}}
	// {{{ public function unfocus( s : UXDialogState ) : Void
	/**
	 * フォーカスが解除された時のデフォルトアクションです。
	 */
	public function unfocus( s : UXDialogState ) : Void
	{
	}
	// }}}
	// {{{ public function resize( s : UXDialogState ) : Void
	/**
	 * ダイアログの大きさが変化した時のデフォルトアクションです。
	 */
	public function resize( s : UXDialogState ) : Void
	{
	}
	// }}}
	// {{{ public function show( s : UXDialogState ) : Void
	/**
	 * 表示された時のデフォルトアクションです。
	 */
	public function show( s : UXDialogState ) : Void
	{
	}
	// }}}
	// {{{ public function hide( s : UXDialogState ) : Void
	/**
	 * 非表示になった時のデフォルトアクションdす。
	 */
	public function hide( s : UXDialogState ) : Void
	{
	}
	// }}}
}
// }}}
// {{{ class UXDialogState extends UXBasicState
/**
 * UXDialogState クラス<br>
 * UXDialogの現在の状態を表すオブジェクトです。
 */
class UXDialogState extends UXBasicState
{
	// {{{ public function new()
	/**
	 * コンストラクタ
	 */
	public function new()
	{
		super();
	}
	// }}}
	// {{{ public var resource( default, default ) : UXDialogResource;
	/**
	 * 描画に使用するリソースです。
	 */
	public var resource( default, default ) : UXDialogResource;
	// }}}
	// {{{ public var panel(default, default) : UXScrollArea
	/**
	 * 背景となるコンポーネント。
	 */
	public var panel(default, default) : UXScrollArea;
	// }}}
	// {{{ public var title( default, default ) : UXLabel;
	/**
	 * 上部のタイトルバーに表示させる文字列を設定します。
	 */
	public var title( default, default ) : UXLabel;
	// }}}
	// {{{ public var textAttribute(default, default) : UXTextAttribute
	/**
	 * タイトル文字列の表示状態を示します。
	 */
	public var titleAttribute(default, default) : UXTextAttribute;
	// }}}
	// {{{ public var icon( default, default ) : UXImage;
	/**
	 * タイトルバーに表示させるアイコン画像を設定します。デフォルトではnullです。
	 */
	public var icon( default, default ) : UXImage;
	// }}}
	// {{{ public var titleBar(default, default) : UXComponent
	/**
	 * タイトルバーコンポーネントです。
	 */
	public var titleBar(default, default) : UXComponent;
	// }}}
	// {{{ public var closeButton( default, default ) : Bool;
	/**
	 * ダイアログの右上にバツボタンを表示するかどうかを設定します。
	 */
	public var closeButton( default, default ) : Bool;
	// }}}
	// {{{ public var resizable( default, default ) : Bool;
	/**
	 * リサイズ可能かどうかを設定します。
	 */
	public var resizable( default, default ) : Bool;
	// }}}
	// {{{ public var modal( default, default ) : Bool;
	/**
	 * モーダルなダイアログにするかどうかを設定します。
	 */
	public var modal( default, default ) : Bool;
	// }}}
	// {{{ public var act(default, null) : UXButtonAct
	/**
	 * デフォルトの動きです。
	 */
	public var acts(default, null) : UXButtonAct;
	// }}}
	// {{{ public var cornerRadius( default, default ) : Float;
	/**
	 * ダイアログの角の丸みの半径です。デフォルト値は 8 です。
	 */
	public var cornerRadius( default, default ) : Float;
	// }}}
	// {{{ public var headerHeight( default, default ) : Float;
	/**
	 * ヘッダの高さを表します。デフォルト値は 28 です。
	 */
	public var headerHeight( default, default ) : Float;
	// }}}
	// {{{ public var focusManager(default, default) : UXFocusManager
	/**
	 * このコンポーネントが属するフォーカスグループの管理オブジェクトです。
	 * このコンポーネントがフォーカスを受け取らない場合はnullです。
	 */
	public var focusManager(default, default) : UXFocusManager;
	// }}}
}
// }}}
// {{{ class UXDialog extends UXComponent
/**
 * UXDialogクラス<br>
 * 
 *
 * @author		iZE Co., Ltd.<br>
 * @version		$Id$<br>
 */
class UXDialog extends UXComponent
{
	// {{{ properties

	private var _state : UXDialogState;

	// }}}
	// {{{ public var ctrl : UXController<UXDialogState>;
	/**
	 * このコンポーネント内でのインタラクションを管理するコントローラークラスのインスタンスです。
	 */
	public var ctrl : UXController<UXDialogState>;
	// }}}
	// {{{ public function new()
	/**
	 * コンストラクタです。
	 */
	public function new( ?title : String )
	{
		super();
	}
	// }}}
	// {{{ private function attachResource() : Void
	/**
	 * ボタンに対するグローバルなリソースをresourceプロパティに取得する関数です。
	 */
	private function attachResource() : Void
	{
	}
	// }}}
	// {{{ public function update( updator : UXDialogState -> Void ) : Void
	/**
	 * このコンポーネントの状態を直接変更するメソッドです。状態のどんな操作も可能になるので、
	 * このメソッドの使用には注意が必要です。
	 */
	public function update( updator : UXDialogState -> Void ) : Void
	{
		updator( _state );
	}
	// }}}
}
// }}}
// {{{ class UXDialogInitInteraction extends UXInteraction<UXDialogState>
/**
 * UXDialogInitInteraction クラス<br>
 * ダイアログの初期化インタラクションです。
 */
class UXDialogInitInteraction extends UXInteraction<UXDialogState>
{
}
// }}}
// {{{ class UXDialogCloseInteraction extends UXInteraction<UXDialogState>
/**
 * UXDialogCloseInteraction クラス<br>
 * ダイアログを閉じる事に対するデフォルトインタラクションです。
 */
class UXDialogCloseInteraction extends UXInteraction<UXDialogState>
{
}
// }}}
// {{{ class UXDialogFocusInteraction extends UXInteraction<UXDialogState>
/**
 * UXCloseInteraction クラス<br>
 * focus/unfocusに対するデフォルトインタラクションです。
 */
class UXDialogFocusInteraction extends UXInteraction<UXDialogState>
{
}
// }}}
// {{{ class UXDialogMoveInteraction extends UXInteraction<UXDialogState>
/**
 * UXDialogMoveInteraction クラス<br>
 * ダイアログの移動に対するデフォルトインタラクションです。
 */
class UXDialogMoveInteraction extends UXInteraction<UXDialogState>
{
}
// }}}
// {{{ class UXDialogResizeInteraction extends UXInteraction<UXDialogState>
/**
 * UXDialogResizeInteraction クラス<br>
 * 大きさを変更するデフォルトインタラクションです。
 */
class UXDialogResizeInteraction extends UXInteraction<UXDialogState>
{
}
// }}}
// {{{ class UXDialogVisibilityInteraction extends UXInteraction<UXDialogState>
/**
 * UXDialogVisibilityInteraction クラス<br>
 * 表示/非表示に対するインタラクションです。
 */
class UXDialogVisibilityInteraction extends UXInteraction<UXDialogState>
{
}
// }}}
